﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AexoManager.Datos;

namespace AexoManager.BussinesLogic
{
    public class BSParte : BSParent
    {

        /// <summary>
        /// Obtiene una Parte a partir del Codigo de parte.
        /// </summary>
        /// <param name="unaParte"></param>
        /// <returns>Un DTOParte/returns>
        public Parte Get(Parte unaParte)
        {
            Parte parte;
            if (unaParte.IdParte != 0)
            {
                parte = context().ParteGet(unaParte.IdParte);
            }
            else
            {
                parte = context().ParteGet(unaParte.Codigo);
            }
            

           return parte;
        }
        public Parte Get(Parte unaParte, params string[] propsACargar)
        {
            Parte parte;
            if (unaParte.IdParte != 0)
            {
                parte = context().ParteGet(unaParte.IdParte, propsACargar);
            }
            else
            {
                parte = context().ParteGet(unaParte.Codigo, propsACargar);
            }


            return parte;
        }

        /// <summary>
        /// Obtiene una lista de todas las partes.
        /// </summary>
        /// <returns></returns>
        public IList<Parte> ObtenerPartes()
        {
            var listaParte = context().ParteObtenerLista();
            return listaParte;
        }

        public IList<Parte> ObtenerPartes(Parte unaParte, int nroElmento, int cantElementos)
        {
            var listaParte = context().ParteObtenerLista(unaParte.Descripcion,nroElmento,cantElementos);
            return listaParte;
        }

        public IEnumerable<Parte> ObtenerPartesFinales()
        {
            try
            {
                return context().PartesFinalesObtenerLista();
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        public int CountPartes(Parte unaParte)
        {
            return  context().ParteObtenerCount(unaParte.Descripcion);

        }

        public void Save(Parte dtoParte)
        {
            context().ParteSave(dtoParte);
        }

        public void Update(Parte dtoParte)
        {
            Parte parte = parte = context().ParteGet(dtoParte.IdParte);

            context().ParteUpdate(parte, dtoParte.Codigo, dtoParte.Descripcion);
           
        }

        public void Delete(Parte dtoParte)
        {
            //Parte parte = parte = context().ParteGet(dtoParte.IdParte);
            context().ParteDelete(dtoParte.IdParte);

        }

        public void LoadCostos(Parte unaParte)
        {
            try
            {
                unaParte.CostoParte.GetEnumerator();
            }
            catch (Exception)
            {
                
                throw;
            }
        }
    }
}
